import cv2
import numpy as np

# 读取图像
img = cv2.imread('img/sb.jpg')

# 应用高斯模糊
# 参数说明:
# img: 输入图像
# (5, 5): 高斯核的大小，必须是正奇数 图像模糊程度越大，模糊效果越明显
# 0: X方向的标准差，如果为0，则根据核大小计算
# 0: Y方向的标准差，如果为0，则使用与X相同的标准差
# cv2.BORDER_DEFAULT: 边界处理方式
# dst = cv2.GaussianBlur(img, (5, 5), 0, 0, cv2.BORDER_DEFAULT)
# medianBlur(img, ksize) 是 OpenCV 库中用于进行中值滤波的函数。这个函数可以非常有效地去除图像中的椒盐噪声，同时较好地保持图像的边缘信息。

# 函数参数解释：
# img：输入图像，可以是灰度图像或彩色图像。
# ksize：滤波器的大小，必须是一个大于1的奇数，例如3、5、7等。滤波器的大小会影响噪声去除的效果和边缘保持的能力。较大的滤波器尺寸可以更有效地去除噪声，但也可能导致边缘信息的损失。
# 函数会返回处理后的图像，这个图像中的椒盐噪声会被显著减少，而边缘信息则得到较好的保留。
# 中值滤波
# dst = cv2.medianBlur(img, 9)

# 双边滤波 用于美颜效果
dst = cv2.bilateralFilter(img, 7, 20, 50)
# 显示原始图像和模糊后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Gaussian Blurred Image', dst)

# 等待按键按下，然后关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()